1.8.6版本是一个重要的BUG修复版本,主要修复了PHP7环境下HttpServer、TCPClient、HttpClient、Redis等客户端存在的内存泄漏、崩溃问题。另外1.8.6版本对MySQL进行了彻底重构,提供了全新的面向对象风格API,彻底移除了对PHP的mysqli和mysqlnd的依赖。
建议所有swoole开发者升级至此版本。
- 修复
Swoole\Server->set
方法在关联索引数组的Value为NULL时错误地更改了zval类型 - 更新
Swoole\Server->task
方法第三个参数可以直接传入回调函数 - 修复
Swoole\WebSocket\Server
收到恶意请求时崩溃的问题,提升稳定性 - 重构
Swoole\MySQL
客户端,移除对mysqli
和mysqlnd
的依赖,提供了面向对象风格的API - 调整
Swoole\Http\Client
为内置,不需要额外的编译参数开启 - 调整
Swoole\Client
和Swoole\Http\Client
内存回收的时机,在连接发送关闭时回收内存资源 - 增加
swoole_async_dns_lookup
查询结果缓存 - 优化
Swoole\WebSocket\Server
性能,减少两次内存复制 - 移除
Swoole\Http\Server->setGlobal
方法 - 修复在Task进程中执行close时onClose回调函数未在Worker进程中执行的问题
- 修复
Swoole\Table
删除KEY后未清空数据的问题 - 增加SSL、TLS证书链的支持
- 移除
gcc aio
- 修复异步文件读写函数的相关问题
$db = new swoole_mysql;
$server = array(
'host' => '192.168.56.102',
'user' => 'test',
'password' => 'test',
'database' => 'test',
);
$db->connect($server, function ($db, $r) {
if ($r === false) {
var_dump($db->connect_errno, $db->connect_error);
die;
}
$sql = 'show tables';
$db->query($sql, function(swoole_mysql $db, $r) {
global $s;
if ($r === false)
{
var_dump($db->error, $db->errno);
}
elseif ($r === true )
{
var_dump($db->affected_rows, $db->insert_id);
}
var_dump($r);
$db->close();
});
});